# 统计数据中所有资产的总金额和资产个数

# 方法：总金额通过将总价金额进行汇总得到 -> 通过split','对列表进行切割获得总价金额 -> 通过parse_amount函数将总价金额处理成正常的整数 -> 相加并打印
'''
#def parse_amount(amount_str):
    # 去除双引号
    amount_str = amount_str.strip('"')
    # 去除逗号
    amount_str = amount_str.replace(',', '')
    # 去掉小数部分（保留整数部分）
    try:
        amount = int(float(amount_str))
    except ValueError:
        # 如果转换失败，返回0或者处理错误
        print("false")
        return 0
    return amount


total_amount = 0

with open('资产数据.csv', 'r', encoding='cp936') as file:
    # 跳过标题行
    header = True
    for line in file:
        if header:
            header = False
            continue

        line = line.strip()
        elements = line.split(',')
        if len(elements) > 6:
            amount_str = elements[6]
            # 将数据处理成正常的整数
            amount = parse_amount(amount_str)
            total_amount += amount

    print(f"总金额: {total_amount}")
'''
f = open("资产数据.txt","r",encoding='utf-8')
a = f.read()
# read()方法是文件对象的一个方法，用于读取文件的全部内容，并将其作为一个字符串返回。
# 去除字符串首尾的空白字符（包括换行符），然后按换行符分割成多行  
b = a.strip().split('\n')
# 初始化一个空列表来存储分割后的数据  
c = [] 
#初始化总价格
total_price1 = 0
total_price2 = 0
total_price = 0
# 遍历每行，按逗号分割，并将结果添加到列表c中  
for line1 in b:  
    # 去除每行两端的空白字符，然后按逗号分割  
    parts = line1.strip().split(',')  
    # 将分割后的列表添加到c中  
    c.append(parts) 
    #对文件中错误格式的数据进行纠正处理
    for line2 in c[1:]:
        if len(line2) > 7 and line2[3].startswith('"') and line2[4].startswith('"'):
            special_data1 = line2[3].strip('"').replace(',', '')
            del line2[4]
        if len(line2) > 7 and line2[5].startswith('"') and line2[6].endswith('"') and line2[7].startswith('"') and line2[8].endswith('"'):
            # 合并两个价格元素，去除首尾引号，替换掉逗号和小数点，然后转换为整数  
            price_str1 = line2[5].strip('"') + line2[6].strip('"').replace(',', '')
            price_str2 = line2[7].strip('"') + line2[8].strip('"').replace(',', '')
            price_num1 = float(price_str1)  # 使用float来正确处理小数点，然后转换为int
            price_num2 = float(price_str2)  # 使用float来正确处理小数点，然后转换为int
            # 更新列表中的价格项（这里我们假设只保留一个更新后的价格项）    
            # 注意：这将删除原列表中的第六个元素，因为我们将两个元素合并成了一个  
            del line2[6]  # 先删除多余的价格元素
            del line2[7]  # 先删除多余的价格元素
            line2[5] = str(price_num1)  # 更新价格项为整数形式的字符串  
            line2[6] = str(price_num2)  # 更新价格项为整数形式的字符串 
        #print(line2[-1])
# 初始化字典来存储部门及其对应的资产总和 
department_sums = {}
for line3 in c[1:]:
    #print(line3[0:])
    
 
    money2 = float(line3[6])
    department_name = line3[0]
    
    
    if department_name in department_sums:
        department_sums[department_name] += money2
        department_sums[department_name] += 1  
    else:  
        department_sums[department_name] = money2

# 关闭文件    
f.close()    
sort_users = sorted(department_sums.items(), key=lambda x: x[1], reverse=True) 
#user, total = sort_users[0] 
#print(f"{user}: 总金额 {total} 元")
for user, total in sort_users:    
    print(f"{user}: {total}") 
